package com.ccsoft.thread.service;

import java.util.ArrayList;
import java.util.List;

/**
 * 2021年12月9日 08:57:11 chanchaw
 * 测试线程的 join
 */
public class No5JoinDemo {
    volatile int count = 0;
    void m(){
        for(int i=0;i<1000;i++){
            count++;
        }
    }

    public static void main(String[] args) {
        No5JoinDemo no5JoinDemo = new No5JoinDemo();
        List<Thread> threads = new ArrayList<>();
        for(int i=0;i<10;i++){
            threads.add( new Thread(no5JoinDemo::m,"thread - " + i));
        }

        threads.forEach( t -> t.start() );

        threads.forEach( t -> {
            try {
                // 将创建的所有10个线程通过 join 插入主线程，等待所有子线程执行完毕后继续主线程
                // 所以 1000 * 10 = 1W，最终 count 被累加到1W
                t.join();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        });

        System.out.println(no5JoinDemo.count);
    }

}
